Distributed computing requires constant interaction between all collaborating network nodes within a distributed data structure. It is impossible to provide such constant interaction between network nodes using a traditional client-server based approach as a server would form both a bottleneck and a single point of failure. For this reason the so-called peer-to-peer (P2P) network has been proposed in which all network nodes take an equal role. In a P2P network all network nodes are equal in the sense that they incorporate both client and server functionalities and each node makes requests directly to other nodes within the network.
In a collaborative network environment a common data repository is required, and this data repository can also be implemented by P2P means. Distributed hash tables (DHTs) are used for this data repository utilising a hash function to map data keys onto coordinate spaces and to distribute coordinate spaces among the participating nodes. A routing algorithm is responsible for finding the node responsible for a given segment of space and thus finding a queried key. Some DHT applications use so-called consistent hashing in which the same hash function is used to map keys and node identifiers to the same coordinate space, and a distance metric is used to map space partitions to nodes. In such applications participating nodes are identified by unique identifiers, but are addressed by means of their network addresses. Therefore each node in the network requires a triplet of data (unique identifier, IP address, port number) in order to be able to communicate with other participating nodes.
One such DHT implemented data structure is the so-called Chord ring structure, as disclosed by I. Stoica, R. Morris, D. Karger, F. Kaashoek and H. Balakrishnan, “Chord: A scalable peer-to-peer lookup service for internet applications”, Proceedings of SIGCOMM'01, 2001. In a Chord ring structure, the identifier space used is a circle, the highest and lowest identifiers represent neighbouring nodes, and the identifiers are organized in clockwise order from lowest to highest. Furthermore, in such a Chord ring structure, the two direct neighbours of a particular node are denoted the “predecessor” and “successor” of that node, the former being the counter-clockwise neighbour, and the latter being the clockwise neighbour, i.e., for all nodes except the node with the lowest identifier, the predecessor of the node is the node with the highest identifier amongst the nodes having lower identifiers than the node in question, whereas, for the node with the lowest identifier, the predecessor of the node is the node with the highest identifier amongst all the nodes. The successor of the node in question is determined similarly but with the ordering of the nodes in the opposite direction.
Additionally, in such a Chord ring structure, every node participating in the network becomes responsible for the identifier space interval between its own identifier (inclusive) and the identifier of its predecessor (exclusive). All node insertions and requests for items of data with keys in this interval are to be forwarded to the address of this specific node.
Much of the research in this area has been focused either on enhancing the DHT algorithms or on developing file sharing applications (e.g. BitTorrent and eMule). Until recently, little effort has been focused on utilizing P2P technologies for interpersonal communication, e.g. voice and multimedia telephony. However, there is an ongoing effort to standardise protocols that would enable such interpersonal communication in P2P networks. These standardization efforts are taking place in the P2PSIP (Peer-to-Peer Session Initiation Protocol) working group of the Internet Engineering Task Force (IETF). Products of the working group to date include:    1) D. Bryan, P. Matthews, E. Shim, D. Willis, Concepts and Terminology for Peer to Peer SIP, November 2007, draft-ietf-p2psip-concepts-01 (http://tools.ietf.org/id/draft-ietf-p2psip-concepts-01.txt), and    2) E. Marocco, D. Bryan, Interworking between P2PSIP Overlays and Conventional SIP Networks, March 2007, draft-marocco-p2psip-interwork-01 (http://tools.ietf.org/id/draft-marocco-p2psip-interwork-01.txt).
Although it would be possible to build isolated P2PSIP networks within which users can locate and connect to peer users, it is expected that at least some networks will be connected via gateways to existing SIP-based networks, in order to allow users within a given P2PSIP to communicate with users in other P2PSIP networks and within IMS networks and traditional client/server networks.
A solution for enabling interconnection of P2P networks is presented by Marocco and Bryan (supra). It enables interconnection by using proxies which are registered to the Domain Name System (DNS). For a given P2PSIP network, queries addressed to an external URI are forwarded to a local proxy. The proxy then queries the DNS to determine an IP address of the proxy responsible for the external URI. This IP address is returned to the originating user within the P2PSIP network so that the user can forward, for example, a SIP INVITE to the remote proxy. The remote proxy forwards the initiation request to the remote user. However, a potential problem with this solution is that it requires each proxy to have a valid DNS domain name. This is not suitable for dynamic (for instance where the IP address of the proxy changes often) or ad-hoc (for instance large scale conference or sporting events) environments.